﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using SilverlightOracle.WCFService;
using System.Text.RegularExpressions;

namespace SilverlightOracle
{
    public partial class SubQuanTriThiSinh : ChildWindow
    {
        ServiceClient webservice = new ServiceClient();
        #region Selected User
        public detailthisinh SelectedUser
        {
            set { this.DataContext = value; }
            get { return this.DataContext as detailthisinh; }
        }
        #endregion
        public SubQuanTriThiSinh()
        {
            InitializeComponent();
        }

        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            if (!Validate()) return;
            else
            {
                Error.Content = "";
                webservice.GetSessionValueCompleted += new EventHandler<GetSessionValueCompletedEventArgs>(webservice_GetSessionValueCompleted);
                webservice.GetSessionValueAsync();
            }
            
        }

        void webservice_GetSessionValueCompleted(object sender, GetSessionValueCompletedEventArgs e)
        {
            if (e.Result != null)
            {
                webservice.UpdateThiSinhCompleted += new EventHandler<UpdateThiSinhCompletedEventArgs>(webservice_UpdateThiSinhCompleted);
                webservice.UpdateThiSinhAsync((detailthisinh)this.DataContext, e.Result as string, Convert.ToDateTime(txtNgaysinh.Text));
            }
            else
            {
                MessageBox.Show("Yêu cầu đăng nhập lại để tiếp tục ... ");
                App.NavigateToPage(new TrangChu());
            }
        }

        void webservice_UpdateThiSinhCompleted(object sender, UpdateThiSinhCompletedEventArgs e)
        {
            bool Res = Convert.ToBoolean(e.Result);
            if (Res)
            {
                MessageBox.Show("Update thành công !!!");
                this.DialogResult = true;
            }
            else
            {
                MessageBox.Show("Update thất bại !!!");
                this.DialogResult = false;
            }
        }

        private void CancelButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = false;
        }
        bool Validate()
        {
            if (txtHoten.Text.Length == 0)
            {
                Error.Content = "Họ tên thí sinh không được để trống";
                txtHoten.Focus();
                return false;
            }
            if (!Regex.IsMatch(txtHoten.Text, @"^[a-zA-Z''-'\s]{1,40}$"))
            {
                Error.Content = "Họ tên chỉ được là chữ a-zA-Z";
                txtHoten.Focus();
                return false;
            }
            if (txtMon1.Text.Length == 0)
            {
                Error.Content = "Điểm môn 1 không được để trống";
                txtMon1.Focus();
                return false;
            }
            if (txtMon1.Text.Length >4 )
            {
                Error.Content = "Điểm môn 1 quá dài";
                txtMon1.Focus();
                return false;
            }
            double num1;
            bool IsNumberisDT = double.TryParse(txtMon1.Text, out num1);
            if (!IsNumberisDT)
            {
                Error.Content = "Điểm môn 1 chỉ được nhập số ";
                txtMon1.Focus();
                return false;
            }
            if (double.Parse(txtMon1.Text) < 0 || double.Parse(txtMon1.Text) > 10)
            {
                Error.Content = "Điểm môn 1 là số nhỏ hơn 0 và lớn hơn 10 ";
                txtMon1.Focus();
                return false;
            }

            if (txtMon2.Text.Length == 0)
            {
                Error.Content = "Điểm môn 2 không được để trống";
                txtMon2.Focus();
                return false;
            }
            if (txtMon2.Text.Length > 4)
            {
                Error.Content = "Điểm môn 2 quá dài";
                txtMon2.Focus();
                return false;
            }
            double num2;
            bool IsNumberisDT2 = double.TryParse(txtMon2.Text, out num2);
            if (!IsNumberisDT2)
            {
                Error.Content = "Điểm môn 2 chỉ được nhập số ";
                txtMon2.Focus();
                return false;
            }
            if (double.Parse(txtMon2.Text) < 0 || double.Parse(txtMon2.Text) > 10)
            {
                Error.Content = "Điểm môn 2 là số nhỏ hơn 0 và lớn hơn 10 ";
                txtMon2.Focus();
                return false;
            }
            if (txtMon3.Text.Length == 0)
            {
                Error.Content = "Điểm môn 3 không được để trống";
                txtMon3.Focus();
                return false;
            }
            if (txtMon3.Text.Length > 4)
            {
                Error.Content = "Điểm môn 3 quá dài";
                txtMon3.Focus();
                return false;
            }
            double num3;
            bool IsNumberisDT3 = double.TryParse(txtMon3.Text, out num3);
            if (!IsNumberisDT3)
            {
                Error.Content = "Điểm môn 3 chỉ được nhập số ";
                txtMon3.Focus();
                return false;
            }
            if (double.Parse(txtMon3.Text) < 0 || double.Parse(txtMon3.Text) > 10)
            {
                Error.Content = "Điểm môn 3 là số nhỏ hơn 0 và lớn hơn 10 ";
                txtMon3.Focus();
                return false;
            }
            if (txtDiemuutien.Text.Length == 0)
            {
                Error.Content = "Điểm ưu tiên không được để trống";
                txtDiemuutien.Focus();
                return false;
            }
            if (txtDiemuutien.Text.Length > 4)
            {
                Error.Content = "Điểm ưu tiên quá dài";
                txtDiemuutien.Focus();
                return false;
            }
            double num4;
            bool IsNumberisDT4 = double.TryParse(txtDiemuutien.Text, out num4);
            if (!IsNumberisDT4)
            {
                Error.Content = "Điểm ưu tiên chỉ được nhập số ";
                txtDiemuutien.Focus();
                return false;
            }
            if (double.Parse(txtDiemuutien.Text) < 0 || double.Parse(txtDiemuutien.Text) > 10)
            {
                Error.Content = "Điểm ưu tiên là số nhỏ hơn 0 và lớn hơn 10 ";
                txtDiemuutien.Focus();
                return false;
            }
            if (txtNganh.Text.Length == 0)
            {
                Error.Content = "Mã ngành đk không được để trống";
                txtNganh.Focus();
                return false;
            }
            int num5;
            bool IsNumberisDT5 = int.TryParse(txtNganh.Text, out num5);
            if (!IsNumberisDT5)
            {
                Error.Content = "Mã ngành chỉ được nhập số ";
                txtNganh.Focus();
                return false;
            }
            if (txtNganh.Text.Length >4)
            {
                Error.Content = "Mã ngành đk chỉ được 4 số";
                txtNganh.Focus();
                return false;
            }
            if (txtDiachi.Text.Length == 0)
            {
                Error.Content = "Địa chỉ của thí sinh không được để trống";
                txtDiachi.Focus();
                return false;
            }
            if (!Regex.IsMatch(txtDiachi.Text, @"^[a-zA-Z''-'\s]{1,255}$"))
            {
                Error.Content = "Địa chỉ chỉ được là chữ a-zA-Z";
                txtDiachi.Focus();
                return false;
            }
            if (txtCmt.Text.Length == 0)
            {
                Error.Content = "Số chứng minh thư không được để trống";
                txtCmt.Focus();
                return false;
            }
            if (txtCmt.Text.Length >15 )
            {
                Error.Content = "Số chứng minh thư chỉ được tối đa 15 ký tự";
                txtCmt.Focus();
                return false;
            }
            int num6;
            bool IsNumberisDT6 = int.TryParse(txtCmt.Text, out num6);
            if (!IsNumberisDT6)
            {
                Error.Content = "Số chứng minh thư chỉ được nhập số ";
                txtCmt.Focus();
                return false;
            }
            if (txtDienthoai.Text.Length == 0)
            {
                Error.Content = "Điện thoại không được để trống";
                txtDienthoai.Focus();
                return false;
            }
            if (txtDienthoai.Text.Length > 10)
            {
                Error.Content = "Điện thoại chỉ được tối đa 10 ký tự";
                txtDienthoai.Focus();
                return false;
            }
            int num7;
            bool IsNumberisDT7 = int.TryParse(txtDienthoai.Text, out num7);
            if (!IsNumberisDT7)
            {
                Error.Content = "Điện thoại chỉ được nhập số ";
                txtDienthoai.Focus();
                return false;
            }
            return true;
        }
    }
}

